// import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'

import { createRouter, createWebHashHistory, type RouteRecordRaw } from 'vue-router'

const routes: RouteRecordRaw[] = [
  {
    name: 'login',
    path: '/login',
    component: () => import('@/views/login/LoginView.vue')
  },
  {
    path: '/',
    redirect: { name: 'index' },
    component: () => import('@/views/layout/index.vue'),
    children: [
      {
        // 首页
        name: 'index',
        path: '/index',
        component: () => import('@/views/layout/HomeView.vue')
      },
      {
        // 课程管理
        name: 'course',
        path: 'course',
        component: () => import('@/views/layout/CourseView.vue')
      },
      {
        // 课程表
        name: 'coursetable',
        path: 'coursetable',
        component: () => import('@/views/layout/CourseTableView.vue')
      },
      {
        // 实验室预约
        name: 'lib',
        path: 'lib',
        component: () => import('@/views/layout/LibView.vue')
      }
    ]
  },
  {
    name: 'nomatch',
    path: '/:pathMatch(.*)*', // 如果是全局匹配，应加上`/`，/:pathMatch(.*)*
    redirect: { name: 'login' }
  }
]

const router = createRouter({
  //history:
  // 这是一个对象，用于配置路由模式。Vue Router 提供了两种模式：hash 和 history。
  // createWebHashHistory(): 使用这种模式时，URL 中会包含一个 # 符号。这种模式不需要服务器进行任何特殊配置，因为它不会真正改变页面的 URL。这是 Vue Router 的默认模式，如果你不提供 history 配置，那么默认会使用它。
  // createWebHistory(import.meta.env.BASE_URL): 使用这种模式时，URL 会看起来更“干净”，没有 # 符号。但它需要服务器进行特殊配置，以便在客户端导航到新的路由时返回正确的页面。import.meta.env.BASE_URL 是 Vite 或 Vue CLI 提供的，代表应用的基础 URL。
  // history: createWebHistory(import.meta.env.BASE_URL),
  history: createWebHashHistory(),
  routes: routes
})

// 路由守卫
router.beforeEach((to, from, next) => {
  console.log(from) //消除未使用警告
  const user = sessionStorage.getItem('user')
  console.log(user)
  if (to.name === 'login' && user) {
    // 如果用户已登录且访问登录页面，则重定向到首页
    next({ name: 'index' })
  } else if (to.name !== 'login' && !user) {
    // 如果用户未登录且访问非登录页面，则重定向到登录页面
    next({ name: 'login' })
  } else {
    // 其他情况下正常跳转
    next()
  }
})

export default router
